Public Sub AddRectanglesOnImageInWpfImageViewer(viewer As Vintasoft.Imaging.Wpf.UI.WpfImageViewer)
Dim random As New System.Random()
' create a set of random red rectangles
Dim redObjects As New Vintasoft.Imaging.Wpf.UI.VisualTools.WpfColoredObjects(Of WpfHightlightRectangle)(CreateRandomHightlightRectangles(random, viewer.Image.Width, viewer.Image.Height, 16))
' set the brush for red rectangles
redObjects.Brush = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(128, 255, 0, 0))
' set the pen for red rectangles
redObjects.Pen = New System.Windows.Media.Pen(New System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(64, 0, 0, 0)), 1)
' create a set of random green rectangles
Dim greenObjects As New Vintasoft.Imaging.Wpf.UI.VisualTools.WpfColoredObjects(Of WpfHightlightRectangle)(CreateRandomHightlightRectangles(random, viewer.Image.Width, viewer.Image.Height, 16))
' set the brush for green rectangles
greenObjects.Brush = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(128, 0, 255, 0))
' set the pen for green rectangles
greenObjects.Pen = New System.Windows.Media.Pen(New System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(64, 0, 0, 0)), 1)
' create a set of random blue rectangles
Dim blueObjects As New Vintasoft.Imaging.Wpf.UI.VisualTools.WpfColoredObjects(Of WpfHightlightRectangle)(CreateRandomHightlightRectangles(random, viewer.Image.Width, viewer.Image.Height, 16))
' set the brush for blue rectangles
blueObjects.Brush = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(128, 0, 0, 255))
' set the pen for blue rectangles
blueObjects.Pen = New System.Windows.Media.Pen(New System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(64, 0, 0, 0)), 1)
' create the visual tool for highlighting rectangles on image in image viewer
Dim highlightTool As New Vintasoft.Imaging.Wpf.UI.VisualTools.WpfHighlightTool(Of WpfHightlightRectangle)()
' add red rectangles to the visual tool
highlightTool.Items.Add(redObjects)
' add green rectangles to the visual tool
highlightTool.Items.Add(greenObjects)
' add blue rectangles to the visual tool
highlightTool.Items.Add(blueObjects)
' set the HighlightTool as the active visual tool in image viewer,
' i.e. show the rectangles on image in image viewer
viewer.VisualTool = highlightTool
End Sub
''' <summary>
''' Creates an array with random rectangles on image.
''' </summary>
Private Function CreateRandomHightlightRectangles(random As System.Random, imageWidth As Integer, imageHeight As Integer, rectCount As Integer) As WpfHightlightRectangle()
Dim objects As WpfHightlightRectangle() = New WpfHightlightRectangle(rectCount - 1) {}
For i As Integer = 0 To rectCount - 1
Dim x As Integer = random.[Next](imageWidth)
Dim y As Integer = random.[Next](imageHeight)
Dim width As Integer = random.[Next](System.Math.Min(100, imageWidth - x))
Dim height As Integer = random.[Next](System.Math.Min(100, imageHeight - y))
objects(i) = New WpfHightlightRectangle(New System.Windows.Rect(x, y, width, height))
Next
Return objects
End Function
''' <summary>
''' A rectangle that must be highlighted on image in image viewer.
''' </summary>
Public Class WpfHightlightRectangle
Implements Vintasoft.Imaging.Wpf.IWpfBoundedObject
Private _rect As System.Windows.Rect
Public Sub New(rect As System.Windows.Rect)
_rect = rect
End Sub
Public Function GetBoundingBox() As System.Windows.Rect Implements Vintasoft.Imaging.Wpf.IWpfBoundedObject.GetBoundingBox
Return _rect
End Function
End Class